﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DTO.Clases;
using BussinesLayer.Clases;
using Utilities;

namespace Aplicacion.Configuracion.FormaPago
{
    public partial class frmFormaPago : Form
    {
        /// <summary>
        /// variables de Clase
        /// </summary>
        public BussinesFormaPago formapago;
        private DataGridViewRow registro;
        private bool guardar = false;
        private ErrorProvider miError = new ErrorProvider();

      
        
        public frmFormaPago()
        {
            InitializeComponent();
        }

        private void frmFormaPago_Load(object sender, EventArgs e)
        {
            //llamo al metodo listaformapago
            ListaFormaPago();              

        }

        

        /// <summary>
        /// guardo formapago
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnFormaPago_Click(object sender, EventArgs e)
        {
            
            //revalido los campos
           txtFormaPago_Validating(null, null);
                      
           
            if (guardar)
            {
                   formapago = new BussinesFormaPago();
                  
                
                var ingresarformapago = new DTO.Clases.FormaPago();
                try
                {
                    //existeforma de pago
                    if (formapago.ExisteFormaPago(txtFormaPago.Text))
                    {
                        MessageBox.Show("La forma de pago ya existe");
                    }
                    else
                    {
                        ingresarformapago.NombreFormaPago = txtFormaPago.Text;

                        formapago.InsertarFormaPago(ingresarformapago);
                        MessageBox.Show(string.Format("Se creo exitosamente"));
                        this.txtFormaPago.Text = "";

                        ListaFormaPago();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }

        }


        /// <summary>
        /// listo forma pago
        /// </summary>
        private void ListaFormaPago()
        {
            formapago = new BussinesFormaPago();
            dgbFormaPago.DataSource = formapago.listarformapago();
          
        }

        /// <summary>
        /// selecciono y mando los valores
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            try
            {
                registro = this.dgbFormaPago.Rows[this.dgbFormaPago.CurrentCell.RowIndex];
                frmModificaFormaPago f2 = new frmModificaFormaPago();
                f2.CargaFormaPago(registro);
                f2.Show();
            }
            catch(Exception ex)
            {
                MessageBox.Show("Seleccione un campo"+ex.Message);
            }
        }


        /// <summary>
        /// elimino forma pago
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tsbtnEliminar_Click(object sender, EventArgs e)
        {
            try
            {
                int id = (int)this.dgbFormaPago.CurrentRow.Cells[0].Value;
                formapago.EliminaFormaPago(id);
                MessageBox.Show("el registro se a eliminado");

                ListaFormaPago();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Seleccione el Campo a Eliminar" + ex.Message);

            }
        }

        


        /// <summary>
        /// valido forma pago campo nulo y formato
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void txtFormaPago_Validating(object sender, CancelEventArgs e)
        {
            if (!Validacion.EsVacio(txtFormaPago, miError, "El campo es Requerido. "))
            {
                if (Validacion.ConFormato
                    (Validacion.TipoValidacion.Palabras, txtFormaPago, miError,
                    "El texto tiene Formato Incorrecto"))
                {
                    guardar = true;
                }
                else
                    guardar = false;
            }
            else
                guardar = false;
        }

       
       
    }
}
